﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using Entidad;

namespace DAO
{
    class HistorialRestauracionDAO
    {
        public HistorialRestauracionEnt ObtenerHistorial(int id_Ejemplar, SqlTransaction tran, SqlConnection con)
        {
            try
            {
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Transaction = tran;
                String comando = "SELECT id_HistorialRestauracion, HistorialRestauracion.id_Ejemplar, id_UltimaRestauracion ";
                comando += "FROM HistorialRestauracion LEFT JOIN ";
                comando += "Ejemplar ON HistorialRestauracion.id_Ejemplar = Ejemplar.id_Ejemplar ";
                comando += "WHERE Ejemplar.id_Ejemplar = @id_Ejemplar";
                cmd.Parameters.AddWithValue("@id_Ejemplar", id_Ejemplar);
                cmd.CommandText = comando;
                SqlDataReader dr = cmd.ExecuteReader();
                HistorialRestauracionEnt resultado = null;
                while (dr.Read())
                {
                    resultado = new HistorialRestauracionEnt();
                    resultado.ID_HistorialRestauracion = int.Parse(dr["id_HistorialRestauracion"].ToString());
                    resultado.ID_Ejemplar = int.Parse(dr["id_Ejemplar"].ToString());
                    if (dr["id_UltimaRestauracion"] != DBNull.Value)
                    {
                        resultado.ID_UltimaRestauracion = int.Parse(dr["id_UltimaRestauracion"].ToString());
                    }
                }
                dr.Close();
                return resultado;
            }
            catch (SqlException)
            {
                throw new ApplicationException("Error al obtener el historial");
            }
        }
        public int CrearHistorial(int id_Ejemplar)
        {
            SqlConnection con = new SqlConnection(DAO_v2.MiCadenaConexion());
            try
            {
                con.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                String comando = "INSERT INTO HistorialRestauracion (id_Ejemplar) ";
                comando += "VALUES (@id_Ejemplar); SELECT @@IDENTITY";
                cmd.Parameters.AddWithValue("@id_Ejemplar", id_Ejemplar);
                cmd.CommandText = comando;
                int id = (int)cmd.ExecuteScalar();
                return id;
            }
            catch (SqlException)
            {
                throw new ApplicationException();
            }
            finally
            {
                if (con.State == System.Data.ConnectionState.Open)
                {
                    con.Close();
                }
            }
        }
        public void Actualizar(int id_HistorialRestauracion, SqlTransaction tran, int id_Restauracion, SqlConnection con)
        {
            try
            {
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                cmd.Transaction = tran;
                String comando = "UPDATE HistorialRestauracion SET id_UltimaRestauracion = @id_UltimaRestauracion ";
                comando += "WHERE id_HistorialRestauracion = @id_HistorialRestauracion ";
                cmd.Parameters.AddWithValue("@id_UltimaRestauracion", id_Restauracion);
                cmd.Parameters.AddWithValue("@id_HistorialRestauracion", id_HistorialRestauracion);
                cmd.CommandText = comando;
                cmd.ExecuteNonQuery();
            }
            catch (SqlException)
            {
                throw new ApplicationException();
            }

        }
    }
}
